Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/180: Рейтинг темы: голосов - 180, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 118

Тип char.Signed/unsigned.Отличие типов данных.

30.08.2009, 22:17. Показов 37852. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос немного может быть не туда... Прошу прощения. Пишу прошивку к контроллеру, на С. Интересует отличие типов данных. ДОпустим есть тип char и тип unsigned char. Первый -128...127, а второй 0...255 соответственно. Оба типа занимают 8 бит. В чем разница?? Или разница в обработки типов библиотеками(к примеру) или правильном распозновании например кодировки ASCII ну и т.д. Интересует разница на битовом уровне. Т.е. по идее и там и там 8 бит..

Вопрос появился, когда мне необходимо было считать байт из регистра. Для этого я завел переменную(допустим t) типа char, считал байт. Если я правильно понимаю t фактически это тоже байт памяти, поэтому при считывании регистра в эту переменную t у меня все эти 8 бит просто дублируются. Вопрос что бы изменилось если бы я переменную обозначил типа unsigned char?? И вообще пишут что тип char это символ, а мне не очень понятно ГДЕ/ЧТО/КАК этот символ. И как СИМВОЛ отличается от типа ИНТЕДЖЕР например(кроме того что int - 16 бит)??
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.08.2009, 22:17
Ответы с готовыми решениями:

Значения типов данных (signed, unsigned, char)
Програмирую я месяца два,но не понимаю значения типов данных : signed, unsigned, char...Помогите..

Char unsigned char signed char длинна Кааак
Здравствуйте. char l = {0,0}; l = 0xff; Почему, меня, компилятор не посылает куда подальше. Нет он конечно...

Надо перевести переменную типа unsigned char* в signed int и обратно
у меня есть переменная типа unsigned char*, мне нужно перевести ее в signed int , провести арифметические вычисления и затем перевести ее...

51
640KB мне хватило на всё.
119 / 50 / 3
Регистрация: 07.06.2009
Сообщений: 447
31.08.2009, 13:42
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от RNT Посмотреть сообщение
char != signed char != unsigned char
char==signed char
Какие-то противоречия
В K&R было char==signed char, но, вообще, в компиляторах это зависит от настроек.

О "модуле" целого в 7 битах
- перечитайте собственную цитату, про "модуль" там ни слова!
если знаковое целое из байта, то -1(10)==11111111(bit)

Для будущего программиста, следует иметь более тупой склад мышления и не-придумывать свойств, объектов и параметров, о которых не было речи в документации или техзадании.

Добавлено через 8 минут
Цитата Сообщение от odip Посмотреть сообщение
Во-первых не вижу обещанного long.
Во-вторых не вижу ни одной проблемы.
Явные преобразования типа ведь сделал ?
Ну так значит думал чем-то когда их делал.

Добавлено через 1 минуту
И потом понятно ведь что 254 в signed char ну никак не поместится
- а какая разница long-не-long, главное, что целые больше char
- компилятор тоже проблем не увидит
- главное осознавать действие и понимать
- человек открыл тред с вопросом, ему и объяснили
- а вот у компилятора такого понимания нет
0
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
31.08.2009, 13:58
Sorry!
0
Автор FAQ
 Аватар для RNT
3150 / 370 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
31.08.2009, 17:02
Приведу отрывок из книги Крупника "Изучаем Си", может кому нибудь будет полезно.

Четыре бита, как ни крути, могут находиться лишь в 16 разных
состояниях. Но теперь этим состояниям соответствуют другие
числа. Любопытно, что за семеркой сразу следует –8(1000).
Далее идут –7(1001), -6(1010), -5(1011), и все кончается нулем.
Такой способ кодирования поначалу может показаться
странным, но на самом деле он очень удобен, потому что
позволяет заменить вычитание числа на прибавление такого же
числа, но с противоположным знаком. Например, 5 – 4 = 5+ (–
4)= 0101 + 1100=0001=1. На самом деле, при сложении чисел 5
(0101) и –4 (1100) получается 17, то есть в двоичной записи
10001. Но в нашей переменной всего 4 бита и старшая единица
вытесняется за ее пределы, остается только единица в
младшем разряде. Вот и получается, что 5 + (-4)=1.
Я заметил , что все отрицательные числа начинаются с 1 , а положительные с 0.
Миниатюры
Тип char.Signed/unsigned.Отличие типов данных.  
0
640KB мне хватило на всё.
119 / 50 / 3
Регистрация: 07.06.2009
Сообщений: 447
31.08.2009, 17:13
RNT, всё правильно. Теперь обратите внимание на то, что назвали "модулем"
Из картинки видно, что ваш "модуль" -8 равен 000 !!!!
0
Автор FAQ
 Аватар для RNT
3150 / 370 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
31.08.2009, 17:16
Насчет модуля я выразился некоректно , извиняюсь
0
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
06.11.2010, 22:45
Цитата Сообщение от RNT Посмотреть сообщение
Четыре бита, как ни крути, могут находиться лишь в 16 разных
состояниях. Но теперь этим состояниям соответствуют другие
числа. Любопытно, что за семеркой сразу следует –8(1000).
Далее идут –7(1001), -6(1010), -5(1011), и все кончается нулем.
Такой способ кодирования поначалу может показаться
странным, но на самом деле он очень удобен, потому что
позволяет заменить вычитание числа на прибавление такого же
числа, но с противоположным знаком. Например, 5 – 4 = 5+ (–
4)= 0101 + 1100=0001=1. На самом деле, при сложении чисел 5
(0101) и –4 (1100) получается 17, то есть в двоичной записи
10001. Но в нашей переменной всего 4 бита и старшая единица
вытесняется за ее пределы, остается только единица в
младшем разряде. Вот и получается, что 5 + (-4)=1.
Я бы не много уточнил у добавил, добавлять и вычитать лучше байтами, логическая структура легче вырисовывается, а именно из аналогии работы АЛУ, которое отбрасывает лишний бит не помещающийся в 8 регистр:
5 - 4 = 5 + (-4) ->
0000 0101 +
1111 1100 (дополнительный код для 4)
=
0000 0001

Добавлено через 35 минут
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
/* int vs char */
 
int main(){
    int i = 254;
    signed char sc = (char)i;
    unsigned char uc = (char)i;
    
    printf("i = %d; sc = %d; uc = %d\n", i, sc, uc);
    
    return(0);
}
Code
1
i = 254; sc = -2; uc = 254
Вот есть код:

C
1
2
3
4
5
6
7
signed char ch=255;
unsigned char uch=255;
int sig_i;
int unsig_i;
 
sig_i = ch;
unsig_i = uch;
возник вопрос какой и куда компилятор устанавливает признак, что для случая
sig_i это будет значение -1 (в двоичной форме .... 1111 1111 1111 1111 1111 1111 1111 1111), а для
unsig_i = 255 (0000 0000 0000 0000 0000 0000 1111 1111), то есть как он решает что в одном случае надо просто нули добавить слева, а в другом единицы?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12844 / 7593 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
07.11.2010, 01:30
Цитата Сообщение от norge_goth Посмотреть сообщение
как он решает что в одном случае надо просто нули добавить слева, а в другом единицы?
Почитайте про распространение знака... Если переменная знакового типа signed char "поднимается" к примеру до int или unsigned int, при установленном старшем бите все старшие биты нового значения устанавливаются в 1. Если "поднимается" беззнаковый тип - unsigned char, старшие разряды заполняются нулями.
1
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
07.11.2010, 14:41
Цитата Сообщение от easybudda Посмотреть сообщение
Почитайте про распространение знака... Если переменная знакового типа signed char "поднимается" к примеру до int или unsigned int, при установленном старшем бите все старшие биты нового значения устанавливаются в 1. Если "поднимается" беззнаковый тип - unsigned char, старшие разряды заполняются нулями.
то есть, как я понимаю компилятор ставит какой-то признак что число беззнаковое или знаковое и использует этот признак когда нужно перевести в 10-ную систему счисления?
еще вопрос - этот признак это просто бит? и где он храниться?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
08.11.2010, 09:30
Тут некоторые товарищи так уверенно утверждали, что в типе char 8 бит, однако в стандарте размер типа char не закреплен. У Страуструпа сказано только, что «практически всегда на объект типа char отводится 8 бит». Т.е. 8 бит нам никто не гарантировал.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12844 / 7593 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
08.11.2010, 10:22
Цитата Сообщение от Mr.X Посмотреть сообщение
8 бит нам никто не гарантировал.
Mr.X, вот по этому Господь дал нам константу CHAR_BIT, определённую в файле limits.h или одном из его включённых файлов
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
08.11.2010, 11:20
Цитата Сообщение от norge_goth Посмотреть сообщение
то есть, как я понимаю компилятор ставит какой-то признак что число беззнаковое или знаковое и использует этот признак когда нужно перевести в 10-ную систему счисления?
еще вопрос - этот признак это просто бит? и где он храниться?
Компилятор просто (ну то есть не совсем просто)) гененрирует ассемблерный код, а там уже за знак овечает флаг SF (signed flag) (флаг - это отдельный бит в регистре флагов) и вычесления уже зависят от того - выставлен ли этот флаг. К слову сказать SF устанавливается всегда, когда старший бит равен 1, например:
C
1
2
3
unsigned char a=100;
unsigned char b=28;
unsigned char c=a+b;
результатом будет c=128 (что в двоичном виде 10000000), казалось бы мы оперируем с беззнаковым типом, но флаг SF все равно будет равен 1 (старший бит же 1), т.е. как будто результат "-128" . И тут встает вопрос :" Что за бред, как процессор вообще определяет где число со знаком, а где без?", ответ:" НИКАК"! Процессор вообще не знает, что такое знак числа, он просто вычесляет то, что в него сунули, при этом результат в шестнадцатиричном виде все равно будет правильный как для положительного, так и для отрицательного числа) А для вывода на экран "знаковых отрицательных" чисел используется дополнительный код (за его существование уже ответственен компилятор, который считывает текстовый файл исходника и видит, что число со знаком, и добавляет тот самый код)
Вот, вроде объяснил) Если что не понятно, спрашивайте!

Добавлено через 5 минут
про дополнительный код:
не буду приводить код на АСМе, вот его суть на C :
C
1
2
3
4
// на это месте уже программа уже знает, что речь идет о "знаковом" числе
if (SF==1)
   printf("-");
//а далее простой перевод из HEX в DEC
т.е. знак "-", который мы видем на экране - это всего лишь отдельно напечатанный символ '-' и не более того.
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
08.11.2010, 15:13
Цитата Сообщение от easybudda Посмотреть сообщение
Mr.X, вот по этому Господь дал нам константу CHAR_BIT, определённую в файле limits.h или одном из его включённых файлов
Значение CHAR_BIT зависит от реализации. Во многих источниках сказано, что это значение не может быть меньше восьми, но в стандарте C++ я что-то никаких упоминаний о значении CHAR_BIT не нашел.
1
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
08.11.2010, 15:17
Цитата Сообщение от Mr.X Посмотреть сообщение
Значение CHAR_BIT зависит от реализации. Во многих источниках сказано, что это значение не может быть меньше восьми, но в стандарте C++ я что-то никаких упоминаний о значении CHAR_BIT не нашел.
Как собственно никто и не говорил, что в байте 8 бит. Аналогично то есть.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12844 / 7593 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
08.11.2010, 17:04
Цитата Сообщение от Mr.X Посмотреть сообщение
Значение CHAR_BIT зависит от реализации.
Ну да. Вот по этому лучше использовать его, если есть сомнения по поводу количества бит в байте.
0
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
08.11.2010, 18:56
Цитата Сообщение от Kastaneda Посмотреть сообщение
А для вывода на экран "знаковых отрицательных" чисел используется дополнительный код (за его существование уже ответственен компилятор, который считывает текстовый файл исходника и видит, что число со знаком, и добавляет тот самый код)
спасибо вам большое все ясно даже вопросов не осталось, из понятого для себя псевдокод составил, буду рад если вы поправите если что не так :
ch = word_1 + word_2 =>

C
1
2
3
4
5
6
7
8
9
10
11
if (word_1 < 0) доп.код(word_1); // если перед числом есть минус берем доп.код
if (word_2 < 0) доп.код(word_2); // если перед числом есть минус берем доп.код
ch = word_1 + word_2;
if (Type(ch) == signed) {
      if (SF == 1) {
             printf("-");
             printf(toDec(доп.код(ch)));
      }
      else printf(toDec(ch));
}
else printf(toDec(ch));
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
09.11.2010, 10:51
Цитата Сообщение от norge_goth Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
if (word_1 < 0) доп.код(word_1); // если перед числом есть минус берем доп.код
if (word_2 < 0) доп.код(word_2); // если перед числом есть минус берем доп.код
ch = word_1 + word_2;
if (Type(ch) == signed) {
      if (SF == 1) {
             printf("-");
             printf(toDec(доп.код(ch)));
      }
      else printf(toDec(ch));
}
else printf(toDec(ch));
Нет, не так. Доп.код про который я писал нужен лишь для вывода числа на экран (ну или куда там). Соответственно в этих строках он не нужен:
C
1
2
if (word_1 < 0) доп.код(word_1); // если перед числом есть минус берем доп.код
if (word_2 < 0) доп.код(word_2); // если перед числом есть минус берем доп.код
два байта и так правильно суммируются, не зависимо от знака (точнее они вообще знака не имеют, об этом писалось выше)
C
1
2
3
4
5
if (Type(ch) == signed) {
      if (SF == 1) {
             printf("-");
             printf(toDec(ch));//почему у вас тут было написано доп.код??
      }
может вы не совсем поняли что есть доп.код?
вот как это выгдядет на ассемблере (создатели компиляторов закладывают подобный код для вывода чисел, ну может более проффесионально написан, хотя этот тоже не плох)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
OutInt proc
        
;; Проверяем число на знак.
       test    ax, ax
       jns     oi1 ; если флаг SF равен 0, то прыг на метку oi1
 
;; Если оно отрицательное, выведем минус и оставим его модуль.
       mov  cx, ax
       mov     ah, 02h
       mov     dl, '-'  ; Вот о чем я говорил, символ '-' печатается отдельно 
                        ;и не имеет отношения  к самому числу
       int     21h
       mov  ax, cx
       neg     ax
;; Количество цифр будем держать в CX.
oi1:  
        xor     cx, cx
        mov     bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
        xor             dx,dx
        div     bx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
        push    dx
        inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
        test    ax, ax
        jnz     oi2
; Теперь приступим к выводу.
        mov     ah, 02h
oi3:
        pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
 
        add     dl, '0'
        int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
        loop    oi3
        
        ret
 
OutInt endp 
 
;код взят здесь : [url]https://www.cyberforum.ru/assembler/thread54461.html[/url]
Автор кода (Goodwin98) по-моему достаточно прокоментировал его, даже не зная АСМа можно понять логику его работы, я там только пару своих коментариев добавил. (строка 5,10)
Если еще остались вопросы - спрашивайте, отвечу (если смогу)))
0
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
09.11.2010, 21:09
Цитата Сообщение от Kastaneda Посмотреть сообщение
может вы не совсем поняли что есть доп.код?
немного запутался... давайте по порядку задачу разделим на 2 этапа:
1. это получение числа (например ch = -20 - 30)
2. вывод на экран

1. я так понимаю все сводиться к прибавлению и мы получаем
ch = -20 + (- 30) и АЛУ выполняет вот такие действия
ch = 11101100(-20 в доп. коде) + 11100010(-30 в доп. коде) я правильно понимаю?

и в итоге на выходе процессора мы получаем 11001110
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
10.11.2010, 14:33
Цитата Сообщение от norge_goth Посмотреть сообщение
немного запутался... давайте по порядку задачу разделим на 2 этапа:
1. это получение числа (например ch = -20 - 30)
не совсем понял, что имелось ввиду, все вычесления производятся там, где они есть в сишном коде, вышепреведенный код используется только для вывода числа на печать.
ch = 11101100(-20 в доп. коде) + 11100010(-30 в доп. коде) я правильно понимаю?

и в итоге на выходе процессора мы получаем 11001110
тут тоже не понял, что значит "(-20 в доп. коде) ", что вы подразумеваете под доп.кодом?
Давайте сначала: речь изначально шла о знаковых/беззнаковых типах. Так вот - таких типов нет, они существуют только в контексте языков C/C++ (ну о других мы сейчас просто не говорим), в действительности же их нет. В языках C/C++ это просто условность для удобства работы программиста (ну и потому что программист не имеет контроля над процессом вывода на устройство вывода)
Таким образом вот этот код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
;; Количество цифр будем держать в CX.
;oi1:  
        xor     cx, cx
        mov     bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
        xor             dx,dx
        div     bx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
        push    dx
        inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
        test    ax, ax
        jnz     oi2
; Теперь приступим к выводу.
        mov     ah, 02h
oi3:
        pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
 
        add     dl, '0'
        int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
        loop    oi3
        
        ret
подставляется всегда, когда нужно вывести число на экран, если же компилятор увидит в сишном исходнике, что речь идет о "знаковых" типах, то плюс к этому коду он еще добавит вот этот:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
;; Проверяем число на знак.
       test    ax, ax
       jns     oi1 ; если флаг SF равен 0, то прыг на метку oi1
 
;; Если оно отрицательное, выведем минус и оставим его модуль.
       mov  cx, ax
       mov     ah, 02h
       mov     dl, '-'  ; Вот о чем я говорил, символ '-' печатается отдельно 
                        ;и не имеет отношения  к самому числу
       int     21h
       mov  ax, cx
       neg     ax
этот код нужен только для печати числа, для математических операций он не нужен, в шестнадцатиричном виде (которым оперирует ассемблер) и так посчитает все правильно, например:
C
1
int result = 30 - (-40);
вот число со знаком, и кажется,что компилятор должен обработать эту строку и в соответствии с правилами математики нужно поменять операцию с '-' на '+' и поменять знак второго операнда, но этого не будет, числа останутся в таком виде в каком есть
Code
1
2
3
30 = 1E (в шестнадцатиричном виде)
-40 = D8 (как и 216(dec)=D8(hex))
result = 1E - D8
вот тут может закипеть мозг, ведь 30-(-40) это 70, а 30-216 это -186. И как процессор должен понять, какой ответ ему нужен??? НИКАК
резюмируем вышесказнное
Code
1
2
3
4
5
6
7
8
имеем 30 - (-40) = 70
еще 30 - 216 = -186
эти две строки выглядят одинаково в шестнадцатиричном виде 1E - D8 = 46 
 
проверяем ответ:
 70 dec = 46 hex
-186 dec = 46 hex
ответ правильный для любых чисел (-40 или 216)
далее в сишном коде например
C
1
printf("&d",result);
так какой же ответ вывести? Очень просто, если result объявлен как int (что по умолчнию подразумевает signed), то числа 30 и -40 будут итерпретироватся как числа со знаком, и для вывода будет сгенерирован весь показный выше асемблерный код (т.е. с проверкой на знак и выводом символа '-' если нужно), если же result был объявлен как unsigned int, то будет сгенерирован только код получения числа (без проверки на знак) и выводом его на экран. Таким образом будет выведен правильный ответ!
Вроде объяснил
2
64 / 64 / 12
Регистрация: 05.07.2010
Сообщений: 219
10.11.2010, 18:52
Такой вопрос:

В первом случае(1) печатается символ, а во втором(2) код символа.
Что в данном случае означает unsigned?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#pragma once
#include <iostream>
using namespace std;
class Bin
{
    unsigned char Bxbit1:1;  //        (1)
        //и т.д.
        
       //unsigned Bxbit1:1;         //        (2)
    
public:
    void ShowBin(void)
        {
       cout<<Bxbit1<<endl;
    }
};
class Hex
{//код
};
class Oct
{
//код
};
union MyByte
{
    unsigned char c;
    Bin b;
    Hex h;
    Oct o;
    MyByte(char x);
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    MyByte byte(0x1f);
    byte.b.ShowBin();
    return 0;
}//endmain
0
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
10.11.2010, 19:55
Цитата Сообщение от st_dent Посмотреть сообщение
Что в данном случае означает unsigned?
дело в том если unsigned то все символы будут попадать в диапазон 0..255, а если signed то если вывести код символа(сконвертировать в инт
или Сишный printf("%d", ch)), то символы код которых больше 127 будут отрицательными -128..127
еще важный момент - помните что char это фактически однобайтовый int и символы храняться в нем в виде кодов(в кодировке ASCII)

Добавлено через 12 минут
Вопрос по вашему коду, что это за объявление? то есть что это символ/код
Цитата Сообщение от st_dent Посмотреть сообщение
unsigned char Bxbit1:1
Добавлено через 11 минут
Цитата Сообщение от Kastaneda Посмотреть сообщение
Вроде объяснил
все понятно спасибо вам большое за терпение
над наверно с асмом побаловаться чтоб меньше таких вопросов стояло
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2010, 19:55

Приведение типов unsigned char[2] to unsigned char [64]
Добрый день! Подскажите пожалуйста, как поступить. Есть простая функция main int main() { SHA1Context sha; uint8_t...

8-битовый тип signed char может представлять значения от -128 до 127
8-битовый тип signed char может представлять значения от -128 до 127 Кто может растолковать как это понимать, от 128 до 127 -...

Signed/Unsigned
Здравствуйте! Стал изучать ЯП C. Не совсем могу понять, что означает Signed и Unsigned (как я понял означает наличие знака(+ либо -) или...

Сложение signed и unsigned
Известно что при сложении signed и unsigned будет результирующий тип unsigned. Подскажите пожалуйста правило согласно которому так будет...

Сравнение чисел unsigned и signed
Результат: 60000 и -5536. По какому принципу выводится значение, если заданное число выходит из диапазона, как в коде? Диапазоны:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru