|
|
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Только с бассейна пришел, уже нельзя включать компьютер (, завтра проверю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 16:00 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryINTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 5.1.2.3 14 example 5 Код: plaintext 1. 2. проверил на разных значениях, получалось эквивалентно.Пробуйте вычитать очень близкие значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 18:45 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovПробуйте вычитать очень близкие значения. Маловероятно что будут потери. Пример (условный, числа как бы двоичные) Код: plaintext 1. 2. 3. 4. Тут уменьшаемое должно быть значительно меньше вычитаемого, тогда будут потери на обратной операции. Пример я выше привел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 19:40 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercury1. INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 5.1.2.3 14 example 5 Код: plaintext 1. 2. проверил на разных значениях, получалось эквивалентно. Приведите пример чтобы было не эквивалентно, пожалуйста Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 23:18 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, понял. Действительно существует расхождение. Пытался вывести на экран битовое представление double, не получилось, ибо побитовое и видимо работает только с целым типом. Ещё подумаю. Почему не расширить препроцессор математическим аппаратом для упрощения выражений такого вида ? Если даже Maple одной командой evalf или simplify позволяет упростить входную строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 03:43 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВсем спасибо, понял. Действительно существует расхождение. Пытался вывести на экран битовое представление double, не получилось, ибо побитовое и видимо работает только с целым типом. Ещё подумаю. Выводи как массив unsigned char[8]. Возможно байты в памяти в обратном порядке хранятся. Структура хранения тут описана Правила преобразования если интересно SashaMercuryПочему не расширить препроцессор математическим аппаратом для упрощения выражений такого вида ? Если даже Maple одной командой evalf или simplify позволяет упростить входную строку. Потому что в таком виде мало кто пишет. Это просто наглядный пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 08:04 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Dima_TВыводи как массив unsigned char[8]. Код: plaintext 1. 2. 3. 4. 5. 6. примерно так ? По этим числам я уже в принципе могу понять какой двоичный код хранится с байтах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 02:28 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryпримерно так ? По этим числам я уже в принципе могу понять какой двоичный код хранится с байтах Примерно да, только выводи в шестнадцатеричном виде или сразу в двоичном, так понятнее. И байты в обратном порядке читай. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 06:51 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Спасибо. Переписал код так. Для double x=1 показывает не то. Проверил ваш код вместе со своим, аналогично. Я думал что для хранения единицы будет в единице только 1 бит, остальные в ноль. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 08:08 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДля double x=1 показывает не то. Что не то? Я тебе ссылку выше давал Читаем Примеры чисел двойной точности0x 3ff0 0000 0000 0000 = 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 08:31 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Туплю. Конечно то. Там фишка вся в мантиссе, забыл. Извиняюсь, не прав ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 08:36 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
авторОкончательное значение числа равняется ±1,мантисса · 2^(порядок − 01111111111) старший бит мантиссы, всегда равный единице, опускается, а порядок 0 записывается как 2^10 - 1 = 1023 т.е. 1 = 1.00000 * 2^0 1. убираем, 0 заменяем на 01111111111 (=1023=0x3FF), получаем Код: plaintext 1. или Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 08:43 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercury Код: plaintext 1. 128 это (1 << (sizeof(unsigned char)* 8-1)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 08:57 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Dima_T128 это (1 << (sizeof(unsigned char)* 8-1)) У меня немного другой цикл. Я подумал, зачем вы приводите к unsigned char а не просто к char. Прочитал на хабре почему так, и решил что раз unsigned char является абстракцией машинного байта, то есть смысл сделать этот цикл для всех машин, и для тех где 1 байт занимает, например, 9 бит. А сейчас я смотрю на свой код, вижу *8 и понял что у меня не получилось то что я хотел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 09:03 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
1 байт везде 8 бит Также принято значения байта считать беззнаковыми, т.е. 0...255, поэтому unsigned char ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 09:24 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Dima T1 байт везде 8 битСейчас. А то есть у меня старенький справочник по це, так там и девятибитные системы упомянуты :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 16:51 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovDima T1 байт везде 8 битСейчас. А то есть у меня старенький справочник по це, так там и девятибитные системы упомянуты :-) Там и биты с тремя состояниями наверно упоминаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 17:02 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Dima TТам и биты с тремя состояниями наверно упоминаются А не угадали :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 17:07 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Начал читать раздел 6.2.5 Types. Подскажите пожалуйста в тех моментах, где я не до конца разобрался. 1. INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.16.2.5 Types 1 The meaning of a value stored in an object or returned by a function is determined by the type of the expression used to access it. (An identifier declared to be an object is the simplest such expression; the type is specified in the declaration of the identifier.) Types are partitioned into object types (types that describe objects) and function types (types that describe functions). At various points within a translation unit an object type may be incomplete (lacking sufficient information to determine the size of objects of that type) or complete (having sufficient information)) Например во время integer promotion ? Когда char может быть расширен до int ? 2. INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.2An object declared as type _Bool is large enough to store the values 0 and 1. Почему этот тип называется _Bool а не bool ?(вообще название выделяется из остальных, хотя бы тем что начинается с "_") Я могу хранить только 0 и 1, или как минимум 0 и 1 ? 3. INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.4There are five standard signed integer types, designated as signed char, short int, int, long int, and long long int. (These and other types may be designated in several additional ways, as described in 6.7.2.) There may also be implementation-defined extended signed integer types. The standard and extended signed integer types are collectively called signed integer types. Приведите пожалуйста пример 4. quote INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.5An object declared as type signed char occupies the same amount of storage as a ‘‘plain’’ char object. A ‘‘plain’’ int object has the natural size suggested by the architecture of the execution environment (large enough to contain any value in the range INT_MIN to INT_MAX as defined in the header <limits.h>). Я понимаю это как -"классический" char. Как правильно ? Можно ли самому менять диапазоны в этом файле ? Подозреваю что можно. Но сомневаюсь, что если поставлю в максимум 2^100 fe, то мне выделится 13 байт при объявлении int. 5. INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.9The range of nonnegative values of a signed integer type is a subrange of the corresponding unsigned integer type, and the representation of the same value in each type is the same.41) A computation involving unsigned operands can never overflow, because a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type. Второе место где возникли трудности, скорее не с переводом, а с пониманием. Вот как я это понял: Если операндами выражения являются unisigned int, то мы никогда не получим переполнение, потому что, в том случае, если у нас есть переполнение(или как написано-если результат не может быть представлен в unsigned int), то над результатом(над каким результатом ?) произойдёт операция reduced modulo...дальше не понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 03:55 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercury1. INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.16.2.5 Types 1 The meaning of a value stored in an object or returned by a function is determined by the type of the expression used to access it. (An identifier declared to be an object is the simplest such expression; the type is specified in the declaration of the identifier.) Types are partitioned into object types (types that describe objects) and function types (types that describe functions). At various points within a translation unit an object type may be incomplete (lacking sufficient information to determine the size of objects of that type) or complete (having sufficient information)) Например во время integer promotion ? Когда char может быть расширен до int ? Нет. Это про структуры/классы. Код: plaintext 1. 2. 3. 4. SashaMercury2. INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.2An object declared as type _Bool is large enough to store the values 0 and 1. Почему этот тип называется _Bool а не bool ?(вообще название выделяется из остальных, хотя бы тем что начинается с "_") Я могу хранить только 0 и 1, или как минимум 0 и 1 ? Почему _Bool не знаю. Хранить можно только 0 и 1 остальное не гарантируется. SashaMercury3. INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.4There are five standard signed integer types, designated as signed char, short int, int, long int, and long long int. (These and other types may be designated in several additional ways, as described in 6.7.2.) There may also be implementation-defined extended signed integer types. The standard and extended signed integer types are collectively called signed integer types. Приведите пожалуйста пример например, на некоторых платформах есть тип __int128 SashaMercury4. quote INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.5An object declared as type signed char occupies the same amount of storage as a ‘‘plain’’ char object. A ‘‘plain’’ int object has the natural size suggested by the architecture of the execution environment (large enough to contain any value in the range INT_MIN to INT_MAX as defined in the header <limits.h>). Я понимаю это как -"классический" char. Как правильно ? Можно ли самому менять диапазоны в этом файле ? Подозреваю что можно. Но сомневаюсь, что если поставлю в максимум 2^100 fe, то мне выделится 13 байт при объявлении int. plain - это простой. В данном случае имеется в виду char без модификаторов signed/unsigned Менять хедеры описанные в стандарте - нельзя. (Да и бессмысленно в данном случае, т.к. <limits.h> всего лишь описывает жестко зашитые в компилятор лимиты, а не задает их) SashaMercury5. INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.9The range of nonnegative values of a signed integer type is a subrange of the corresponding unsigned integer type, and the representation of the same value in each type is the same.41) A computation involving unsigned operands can never overflow, because a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type. Второе место где возникли трудности, скорее не с переводом, а с пониманием. Вот как я это понял: Если операндами выражения являются unisigned int, то мы никогда не получим переполнение, потому что, в том случае, если у нас есть переполнение(или как написано-если результат не может быть представлен в unsigned int), то над результатом(над каким результатом ?) произойдёт операция reduced modulo...дальше не понял При переполнении беззнакововой операции результатом будет остаток от деления на 2 в степени разрядность конечного типа. Другими словами все старшие биты, которые не влезают, будут отброшены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 05:02 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Спасибо :) Всё-таки про _Bool очень интересно, такое именование не просто так. Мне кажется, это связано с тем, что на этот тип хватит и бита, а выделяется байт, со всеми вытекающими ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 07:43 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Несколько раз встретил "alignment requirements" . Забыл сразу спросить про то, как правильно это понимать. В первом приближении я понял это как порядок расположения/чтения байт(куска памяти), далее нашёл в сети следующий перевод-"требования к точности совмещения". И всё равно я не уверен что правильно понимаю о чём идёт речь. Ниже пример куска где используется это словосочетание: INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:201x 6.2.5.13 Each complex type has the same representation and alignment requirements as an array type containing exactly two elements of the corresponding real type; the first element is equal to the real part, and the second element to the imaginary part, of the complex number. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 08:25 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Ещё возник один простой вопрос. Верны ли предложения ниже ? 1. Объект объявленный как char имеет размер достаточный для хранения basic execution character set. То есть можно утверждать: char символьный тип. 2. Не везде char будет занимать 1 байт.(больше предположение) 3.signed char и unsigned char - принадлежат множеству целых типов (standart integer types). 4. Объём памяти выделенный на plain char и u/s char одинаков. 5. char, signed char, unsigned char это разные вещи. И никто из них не может рассматриваться попарно равным. 6.int=unsigned int, не существует plain int, или plain smth_type кроме char. Хотя в стандарте указывают plain int, я так понял это signed int. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 08:48 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
7. 9899:201x 14 The type char, the signed and unsigned integer types, and the floating types are collectively called the basic types. The basic types are complete object types. Even if the implementation defines two or more basic types to have the same representation, they are nevertheless different types.44) 15 The three types char, signed char, and unsigned char are collectively called the character types. The implementation shall define char to have the same range, representation, and behavior as either signed char or unsigned char.45) 16 An enumeration comprises a set of named integer constant values. Each distinct enumeration constitutes a different enumerated type. 17 The type char, the signed and unsigned integer types, and the enumerated types are collectively called integer types. The integer and real floating types are collectively called real types. К чему это было смешивать. Было бы так char-символьный, u/s char -целый. А тут получается что u/s char принадлежит двум пространствам. Это мне не нравится. Тогда какой смысл в этом выделении plain char. Да и вообще двусмысленность получается. Может быть я что-то не так понял.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 09:01 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНесколько раз встретил "alignment requirements" . Забыл сразу спросить про то, как правильно это пониматьТребования к выравниванию. Например, в x86 обращение к слову, которое расположено по нечётному адресу "штрафуется" (только) лишними циклами циклами обращения к памяти. Есть архитектуры, где такие обращения запрещены и будет сгенерировано аппаратное исключение. В x86 начиная, если правильно помню, с i486 есть специальный "бит выравнивания" в слове состояния процессора - если установить, то невыровненные обращения будут вызывать аппаратное исключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 10:36 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38620023&tid=2018847]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
213ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 530ms |

| 0 / 0 |
