Generate pandoc dataclasses

This commit is contained in:
2026-09-14 19:26:07 +03:00
parent 0aaa074bc6
commit 6962cf3e73
11 changed files with 1971 additions and 4 deletions
+175
View File
@@ -0,0 +1,175 @@
# Задачи по побитовым операциям на Java
> **Условие:** без использования операторов выбора (`if`, `switch`, `?:`), циклов (`for`, `while`, `do`) и объявления новых функций. Только `main`, побитовые операции, арифметика и `System.out.println`.
---
## Задача 1. Умножить число на 4 без умножения
**Условие:** Дано целое число `n`. Получить `n * 4`, используя только побитовые операции.
|**Ввод:** |**Вывод:**|
|--|--|
| 5 | 20 |
**Решение:**
```java
public class Task1 {
public static void main(String[] args) {
int n = 5;
int result = n << 2; // сдвиг влево на 2 = умножение на 4
System.out.println(result);
}
}
```
---
## Задача 2. Разделить число на 2 без деления
**Условие:** Дано целое число `n`. Получить `n / 2`, используя только побитовые операции.
|**Ввод:** |**Вывод:**|
|--|--|
| 20 | 10 |
**Решение:**
```java
public class Task2 {
public static void main(String[] args) {
int n = 20;
int result = n >> 1; // сдвиг вправо на 1 = деление на 2
System.out.println(result);
}
}
```
---
## Задача 3. Проверить, чётное ли число
**Условие:** Дано целое число `n`. Вывести `1`, если оно чётное, и `0`, если нечётное.
|**Ввод:** |**Вывод:**|
|--|--|
| 7 | 0 |
**Решение:**
```java
public class Task3 {
public static void main(String[] args) {
int n = 7;
int result = (n & 1) ^ 1; // если младший бит 1 → 0, иначе → 1
System.out.println(result);
}
}
```
---
## Задача 4. Обнулить младший бит
**Условие:** Дано целое число `n`. Обнулить его самый младший установленный бит.
|**Ввод:** |**Вывод:**|
|--|--|
| 12 | 8 |
**Решение:**
```java
public class Task4 {
public static void main(String[] args) {
int n = 12;
int result = n & (n - 1); // трюк: убирает младший установленный бит
System.out.println(result);
}
}
```
---
## Задача 5. Установить k-й бит в 1
**Условие:** Даны число `n` и позиция `k` (нумерация с 0). Установить `k`-й бит в 1.
|**Ввод:** |**Вывод:**|
|--|--|
| 8 2 | 12 |
**Решение:**
```java
public class Task6 {
public static void main(String[] args) {
int n = 8; // 1000
int k = 2;
int result = n | (1 << k); // 1000 | 0100 = 1100 = 12
System.out.println(result);
}
}
```
---
## Задача 6. Инвертировать k-й бит
**Условие:** Даны число `n` и позиция `k`. Инвертировать `k`-й бит.
|**Ввод:** |**Вывод:**|
|--|--|
| 10 1 | 8 |
**Решение:**
```java
public class Task7 {
public static void main(String[] args) {
int n = 10; // 1010
int k = 1;
int result = n ^ (1 << k); // 1010 ^ 0010 = 1000 = 8
System.out.println(result);
}
}
```
---
## Задача 7. Умножить число на 5 без умножения
**Условие:** Дано целое число `n`. Получить `n * 5`, используя только сдвиги и сложение.
|**Ввод:** |**Вывод:**|
|--|--|
| 7 | 35 |
**Решение:**
```java
public class Task10 {
public static void main(String[] args) {
int n = 7;
int result = (n << 2) + n; // 4n + n = 5n
System.out.println(result);
}
}
```
---
## Задача 8. Умножить число на 3 без умножения
**Условие:** Дано целое число `n`. Получить `n * 3`, используя только сдвиги и сложение.
|**Ввод:** |**Вывод:**|
|--|--|
| 7 | 21 |
**Решение:**
```java
public class Task10 {
public static void main(String[] args) {
int n = 7;
int result = (n << 1) + n; // 2n + n = 3n
System.out.println(result);
}
}
```